package org.origin.centre.security.utils;

import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

import java.util.List;

/**
 * 路径工具
 *
 * @author ferret
 * @version 2024-05-08
 */
public class RequestMatcherUtil {

    /**
     * 根据提供的URL列表，创建并返回一个AntPathRequestMatcher对象数组。
     * 这个方法主要用于将字符串形式的URL路径转换为Ant风格路径匹配器数组。
     *
     * @param urls 包含需要匹配的URL路径的列表。如果列表为空或null，则返回空的AntPathRequestMatcher数组。
     * @return AntPathRequestMatcher对象数组。如果输入的urls为空，返回一个空数组。
     */
    public static AntPathRequestMatcher[] getAntPathRequestMatchers(List<String> urls) {
        // 检查输入的URL列表是否为空，如果为空则直接返回空的AntPathRequestMatcher数组
        if (urls == null || urls.size() <= 0) {
            return new AntPathRequestMatcher[]{};
        }
        // 使用Stream API将URL列表中的每个URL转换为AntPathRequestMatcher对象
        return urls.stream()
                .map(AntPathRequestMatcher::new)
                .toList() // 将转换后的Stream结果收集到List中
                .toArray(new AntPathRequestMatcher[]{}); // 将List转换为数组并返回
    }

    /**
     * 创建一个Ant风格路径模式的请求匹配器。
     *
     * @param url 用于匹配的Ant风格路径。
     * @return 返回一个新的AntPathRequestMatcher实例，使用给定的URL作为匹配模式。
     */
    public static AntPathRequestMatcher getAntPathRequestMatcher(String url) {
        return new AntPathRequestMatcher(url);
    }

}
